package com.openlogic.common.logic;

import org.noear.solon.core.AppContext;
import org.noear.solon.core.Plugin;

import com.openlogic.common.logic.config.CxfConfig;
import com.openlogic.common.logic.log.strategy.DecisionCrossTableLogService;
import com.openlogic.common.logic.log.strategy.DecisionFlowLogService;
import com.openlogic.common.logic.log.strategy.DecisionScoreCardLogService;
import com.openlogic.common.logic.log.strategy.DecisionTableLogService;
import com.openlogic.common.logic.log.strategy.DecisionTreeLogService;
import com.openlogic.common.logic.node.parse.AreaParseHandler;
import com.openlogic.common.logic.node.parse.DefaultParseHandler;
import com.openlogic.common.logic.node.parse.FieldParseHandler;
import com.openlogic.common.logic.node.parse.LineParseHandler;
import com.openlogic.common.logic.node.parse.NodeParseHandler;
import com.openlogic.common.logic.run.ExecCommNodeHandler;
import com.openlogic.common.logic.run.ExecCrossMatrixNodeHandler;
import com.openlogic.common.logic.run.ExecDecNodeHandler;
import com.openlogic.common.logic.run.ExecDefaultNodeHandler;
import com.openlogic.common.logic.run.ExecMatrixNewNodeHandler;
import com.openlogic.common.logic.run.ExecMatrixNodeHandler;
import com.openlogic.common.logic.run.ExecResultNodeHandler;
import com.openlogic.common.logic.run.ExecScoreCardNodeHandler;
import com.openlogic.common.logic.run.ExecSwitchNodeHandler;

/**
 * @ClassName: LogicPlugin
 * @Description: 决策插件
 * @author weiyongpeng
 * @date 2025年2月9日 上午7:42:21
 */
public class LogicPlugin implements Plugin {

	/**
	 * 注册Bean
	 * @param context
	 * @throws Throwable
	 */
	@Override
	public void start(AppContext context) throws Throwable {
		// 生成Bean，并触发身上的注解处理（比如类上有 @Controller 注解；则会执行 @Controller 对应的处理）
		context.beanMake(NodeParseHandler.class);
		context.beanMake(AreaParseHandler.class);
		context.beanMake(DefaultParseHandler.class);
		context.beanMake(FieldParseHandler.class);
		context.beanMake(LineParseHandler.class);
		context.beanMake(ExecDecNodeHandler.class);
		context.beanMake(ExecDefaultNodeHandler.class);
		context.beanMake(ExecResultNodeHandler.class);
		context.beanMake(ExecSwitchNodeHandler.class);
		context.beanMake(ExecMatrixNodeHandler.class);
		context.beanMake(ExecMatrixNewNodeHandler.class);
		context.beanMake(ExecCrossMatrixNodeHandler.class);
		context.beanMake(ExecScoreCardNodeHandler.class);
		context.beanMake(ExecCommNodeHandler.class);
		context.beanMake(CxfConfig.class);
		context.beanMake(DecisionTreeLogService.class);
		context.beanMake(DecisionFlowLogService.class);
		context.beanMake(DecisionTableLogService.class);
		context.beanMake(DecisionScoreCardLogService.class);
		context.beanMake(DecisionCrossTableLogService.class);
	}

}
